package com.gzit.activity;

import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;

import com.gzit.common.Action;

/**
 * 功能：集中处理View的onClick事件，在Activity中有大量响应点击事件的View存在时，继承该类有助于提高内聚。<br>
 * 使用方法:<br>
 * 1.在setContentView之后调用initFramework完成初始化。<br>
 * 2.在regActions中关联viewid与处理事件的对应关系。<br>
 * 
 * @author teddy
 * 
 */
public abstract class GzitActivity extends Activity {

	protected Action.Mapper actionsMapper = Action.init();
	protected OnClickListener btnOnClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			Action action = actionsMapper.get(v.getId());
			if (action != null) {
				action.doIt();
			}

		}
	};

	// 子类通过该方法，注册按钮的事件
	protected abstract void regActions(Action.Mapper mapper);

	// 子类 在所有的VIEW都初始化到界面之后 调用该方法做初始化工作
	protected void initFramework() {
		this.regActions(actionsMapper);
		this.regViewClickEvent();
	}

	protected void regViewClickEvent() {
		for (int rid : actionsMapper.keySet()) {
			this.findViewById(rid).setOnClickListener(btnOnClickListener);
		}
	}

}
